package tools

import (
	"fmt"
	"net"
	"os"
	"strconv"
	"time"
)

func (t Command) Telnet() {
	if len(os.Args) != 4 {
		fmt.Println("请求参数有误！请参考：yt telnet 127.0.0.1 22")
		return
	}
	host := os.Args[2]
	port, _ := strconv.Atoi(os.Args[3])
	if isPortOpen(host, port) {
		fmt.Printf("端口 %d 在 %s 上处于开放状态。\n", port, host)
	} else {
		fmt.Printf("端口 %d 在 %s 上未开放。\n", port, host)
	}
}

// 检查端口是否开放
func isPortOpen(host string, port int) bool {
	address := fmt.Sprintf("%s:%d", host, port)

	// 设置超时时间
	timeout := time.Second * 4

	// 尝试建立 TCP 连接
	conn, err := net.DialTimeout("tcp", address, timeout)
	if err != nil {
		return false // 端口未开放
	}
	defer conn.Close()

	return true // 端口开放
}
